#include<iostream>
#include<pthread.h>
#include<unistd.h>
//线程的局部存储：

//默认全局变量由所有线程共享。
//1.如果希望每个线程都有自己的gval，我们可以加__thread关键字（gcc/g++系列支持）：
// __thread int gval = 100;
//2.我们可以用C++标准的做法，这样就有更好的可移植性：
thread_local int gval = 100;

std::string toHex(void* tid)
{
    char ret[128] = {0};
    snprintf(ret, 128, "0x%p", tid);
    return std::string(ret);
}
void* threadRun(void* atr)
{
    //线程的分离：
    pthread_detach(pthread_self());
    while(true)
    {
        std::cout << (char*)atr << " running...gval->" << gval++ << " &gval->" << toHex(&gval) << std::endl;
        sleep(1);
    }
}
int main()
{
    //1.创建线程：
    pthread_t tid;
    pthread_create(&tid, nullptr, threadRun, (void*)"thread-1");

    //2.主线程：
    while(true)
    {
        std::cout << "Main---->gval->" << gval << " &gval->" << toHex(&gval) << std::endl;
        sleep(1);
    }
}